home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / PNL Libraries / MyForeBackGround.p < prev    next >
Encoding:
Text File  |  1994-10-14  |  1.5 KB  |  78 lines  |  [TEXT/PJMM]

  1. unit MyForeBackGround;
  2.  
  3. interface
  4.  
  5.     const
  6.         def_stack = longInt(24) * 1024;
  7.         def_masters = 10;
  8.  
  9.     var
  10.         foreground_app: boolean;
  11.  
  12.     procedure InitInForeOrBackground (back_stack, fore_stack: longInt; back_masters, fore_masters: integer);
  13.  
  14. implementation
  15.  
  16.     uses
  17. {$IFC undefined THINK_Pascal}
  18.         Types, Resources, Fonts, Windows, QuickDraw, Menus, TextEdit, Dialogs, Memory, 
  19. {$ENDC}
  20.         MySizeResource;
  21.  
  22. {$IFC undefined POWERPC}
  23.     function StackPtr: longInt;
  24.     inline
  25.         $2E8F;
  26. {$ENDC}
  27.  
  28.     procedure InitInForeOrBackground (back_stack, fore_stack: longInt; back_masters, fore_masters: integer);
  29.         const
  30.             CurApNameA = $910;
  31.         var
  32.             size: sizeRsrc;
  33.             i: integer;
  34.             zero: handle;
  35.             stack, masters : longInt;
  36.     begin
  37.  
  38.         GetSizeResource(size);
  39.         foreground_app := not size.only_background;
  40.  
  41. { Check if we are running in the environment }
  42. {$IFC not undefined THINK_Pascal}
  43.         zero := GetResource('ZERO', 0);
  44.         if (zero <> nil) & (HomeResFile(zero) <> CurResFile) then begin
  45.             foreground_app := true;
  46.         end;
  47. {$ENDC}
  48.  
  49. {$IFC undefined THINK_Pascal}
  50.         InitGraf(@qd.thePort);
  51. {$ELSEC}
  52.         InitGraf(@thePort);
  53. {$ENDC}
  54.         if foreground_app then begin
  55.             InitFonts;
  56.             InitWindows;
  57.             InitMenus;
  58.             TEInit;
  59.             InitDialogs(nil);
  60.             stack := fore_stack;
  61.             masters := fore_masters;
  62.         end else begin
  63.             stack := back_stack;
  64.             masters := back_masters;
  65.         end;
  66.         if stack = 0 then
  67.             stack := def_stack;
  68.         if masters = 0 then
  69.             masters := def_masters;
  70. {$IFC undefined POWERPC}
  71.         SetApplLimit(ptr(StackPtr - stack));
  72. {$ENDC}
  73.         MaxApplZone;
  74.         for i := 1 to masters do
  75.             MoreMasters;
  76.     end;
  77.  
  78. end.